﻿// -----------------------------------------------------------------------
// <copyright file="ISettingsManager.cs" company="Microsoft">
//  RLY?
// </copyright>
// -----------------------------------------------------------------------

namespace StatePersistence.Interface
{
    using System.Collections.Generic;

    /// <summary>
    /// Defines the Settings Manager's exposed members
    /// </summary>
    /// <typeparam name="T">The type</typeparam>
    public interface ISettingsManager<T>
    {
        /// <summary>
        /// Gets the max settings number.
        /// </summary>
        /// <returns>The highest number and therefore filename in the store folder</returns>
        int MaxSettingsNumber { get; }

        /// <summary>
        /// Stores the specified settings.
        /// </summary>
        /// <param name="settings">The settings.</param>
        void Store(T settings);

        /// <summary>
        /// Lists the stored settings.
        /// </summary>
        /// <returns>An IEnumerable of type T</returns>
        IEnumerable<T> ListStoredSettings();

        /// <summary>
        /// Clears the stored settings.
        /// </summary>
        void ClearStoredSettings();
    }
}
